home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=c) 2003 Grzegorz Jankowski Title=OceanDVD (PL) Description=Movie importation script for OceanDVD import info & small picture Site=http://www.oceandvd.pl Language=PL Version=1.0 Requires=3.5.0 Comments=Movie information & small picture importation|c) 2003 Grzegorz Jankowski (child@wp.pl)|based on script 'Filmweb (PL) small pic.ifs' by Piotr Kardasz & Adma's|14.02.2005 Improvements made by Adma's License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program FilmWeb; var MovieName: string; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; procedure DelSpace(var Value: String); var FullValue: String; Counter: Integer; begin if Value <> '' then begin FullValue := FullValue + StrGet(Value, 1); for Counter := 2 to Length(Value) do begin if StrGet(Value, Counter) <> ' ' then FullValue := FullValue + StrGet(Value, Counter) else if StrGet(FullValue, Length(FullValue)) <> ' ' then FullValue := FullValue + ' '; end; Value := FullValue; end end; procedure DecodeHTML(var Value: String); var FullValue, CharCode: String; Counter: Integer; begin if Value <> '' then begin FullValue := ''; Counter := 1; repeat if StrGet(Value, Counter) <> '&' then begin CharCode := copy(Value, Counter, 1); case CharCode of '▒': CharCode := '╣'; '╢': CharCode := '£'; 'í': CharCode := 'Ñ'; '╝': CharCode := 'ƒ'; 'ª': CharCode := 'î'; '¼': CharCode := 'Å'; end; FullValue := FullValue + CharCode; Counter := Counter + 1; end else begin CharCode := copy(Value, Counter, 7); case CharCode of 'ą': FullValue := FullValue + '╣'; 'ć': FullValue := FullValue + 'µ'; 'ę': FullValue := FullValue + 'Ω'; 'ł': FullValue := FullValue + '│'; 'ń': FullValue := FullValue + '±'; 'ó': FullValue := FullValue + '≤'; 'ś': FullValue := FullValue + '£'; 'ź': FullValue := FullValue + 'ƒ'; 'ż': FullValue := FullValue + '┐'; 'Ą': FullValue := FullValue + 'Ñ'; 'Ć': FullValue := FullValue + '╞'; 'Ę': FullValue := FullValue + '╩'; 'Ł': FullValue := FullValue + 'ú'; 'Ń': FullValue := FullValue + '╤'; 'Ó': FullValue := FullValue + '╙'; 'Ś': FullValue := FullValue + 'î'; 'Ź': FullValue := FullValue + 'Å'; 'Ż': FullValue := FullValue + '»'; 'Š': FullValue := FullValue + ' '; 'š': FullValue := FullValue + 'í'; 'Ţ': FullValue := FullValue + 'í'; 'ţ': FullValue := FullValue + 'ú'; 'Ť': FullValue := FullValue + 'ñ'; 'ť': FullValue := FullValue + 'Ñ'; 'Ŧ': FullValue := FullValue + 'î'; 'ŧ': FullValue := FullValue + 'º'; 'Ũ': FullValue := FullValue + '¿'; 'ũ': FullValue := FullValue + '⌐'; 'Ű': FullValue := FullValue + '¬'; 'ű': FullValue := FullValue + '½'; 'Ų': FullValue := FullValue + '¼'; 'ų': FullValue := FullValue + '¡'; 'Ŵ': FullValue := FullValue + '«'; 'ŵ': FullValue := FullValue + '»'; 'Ŷ': FullValue := FullValue + '░'; 'ŷ': FullValue := FullValue + '▒'; 'Ÿ': FullValue := FullValue + '▓'; 'ƀ': FullValue := FullValue + '┤'; 'Ɓ': FullValue := FullValue + '╡'; 'Ƃ': FullValue := FullValue + '╢'; 'ƃ': FullValue := FullValue + '╖'; 'Ƅ': FullValue := FullValue + '╕'; 'ƅ': FullValue := FullValue + '╣'; 'Ɔ': FullValue := FullValue + '║'; 'Ƈ': FullValue := FullValue + '╗'; 'ƈ': FullValue := FullValue + '╝'; 'Ɖ': FullValue := FullValue + '╜'; 'Ɛ': FullValue := FullValue + '╛'; 'Ƒ': FullValue := FullValue + '┐'; 'ƒ': FullValue := FullValue + '└'; 'Ɠ': FullValue := FullValue + '┴'; 'Ɣ': FullValue := FullValue + '┬'; 'ƕ': FullValue := FullValue + '├'; 'Ɩ': FullValue := FullValue + '─'; 'Ɨ': FullValue := FullValue + '┼'; 'Ƙ': FullValue := FullValue + '╞'; 'ƙ': FullValue := FullValue + '╟'; 'Ȁ': FullValue := FullValue + '╚'; 'ȁ': FullValue := FullValue + '╔'; 'Ȃ': FullValue := FullValue + '╩'; 'ȃ': FullValue := FullValue + '╦'; 'Ȅ': FullValue := FullValue + '╠'; 'ȅ': FullValue := FullValue + '═'; 'Ȇ': FullValue := FullValue + '╬'; 'ȇ': FullValue := FullValue + '╧'; 'Ȉ': FullValue := FullValue + '╨'; 'ȉ': FullValue := FullValue + '╤'; 'Ȑ': FullValue := FullValue + '╥'; 'ȑ': FullValue := FullValue + '╙'; 'Ȓ': FullValue := FullValue + '╘'; 'ȓ': FullValue := FullValue + '╒'; 'Ȕ': FullValue := FullValue + '╓'; 'ȕ': FullValue := FullValue + '╫'; 'Ȗ': FullValue := FullValue + '╪'; 'ȗ': FullValue := FullValue + '┘'; 'Ș': FullValue := FullValue + '┌'; 'ș': FullValue := FullValue + '█'; 'Ƞ': FullValue := FullValue + '▄'; 'ȡ': FullValue := FullValue + '▌'; 'Ȣ': FullValue := FullValue + '▐'; 'ȣ': FullValue := FullValue + '▀'; 'Ȥ': FullValue := FullValue + 'α'; 'ȥ': FullValue := FullValue + 'ß'; 'Ȧ': FullValue := FullValue + 'Γ'; 'ȧ': FullValue := FullValue + 'π'; 'Ȩ': FullValue := FullValue + 'Σ'; 'ȩ': FullValue := FullValue + 'σ'; 'Ȱ': FullValue := FullValue + 'µ'; 'ȱ': FullValue := FullValue + 'τ'; 'Ȳ': FullValue := FullValue + 'Φ'; 'ȳ': FullValue := FullValue + 'Θ'; 'ȴ': FullValue := FullValue + 'Ω'; 'ȵ': FullValue := FullValue + 'δ'; 'ȶ': FullValue := FullValue + '∞'; 'ȷ': FullValue := FullValue + 'φ'; 'ȸ': FullValue := FullValue + 'ε'; 'ȹ': FullValue := FullValue + '∩'; 'ɀ': FullValue := FullValue + '≡'; 'Ɂ': FullValue := FullValue + '±'; 'ɂ': FullValue := FullValue + '≥'; 'Ƀ': FullValue := FullValue + '≤'; 'Ʉ': FullValue := FullValue + '⌠'; 'Ʌ': FullValue := FullValue + '⌡'; 'Ɇ': FullValue := FullValue + '÷'; 'ɇ': FullValue := FullValue + '≈'; 'Ɉ': FullValue := FullValue + '°'; 'ɉ': FullValue := FullValue + '∙'; 'ɐ': FullValue := FullValue + '·'; 'ɑ': FullValue := FullValue + '√'; 'ɒ': FullValue := FullValue + 'ⁿ'; 'ɓ': FullValue := FullValue + '²'; 'ɔ': FullValue := FullValue + '■'; 'ɕ': FullValue := FullValue + ' '; '%DF;': FullValue := FullValue + '▀'; '4': FullValue := FullValue + '"'; '”': FullValue := FullValue + '"'; '„': FullValue := FullValue + '"'; '–': FullValue := FullValue + '-'; else FullValue := FullValue + CharCode; end; Counter := Counter + 7; end; until Counter > Length(Value); HTMLDecode(FullValue); Value := FullValue; end end; procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer); var Line: string; MovieTitle, MovieAddress: string; StartPos, EndPos: Integer; begin LineNr := FindLine('<li>', Page, LineNr); if LineNr > -1 then begin PickTreeAdd('Znaleziono filmy:', ''); Line := Page.GetString(LineNr); repeat repeat StartPos := pos('<li>', Line) + 4; Line := copy(Line, StartPos, Length(Line) - StartPos + 1); StartPos := pos('href="', Line) + 6; Line := copy(Line, StartPos, Length(Line) - StartPos + 1); MovieAddress := copy(Line, 1, pos('">', Line) - 1); MovieAddress := 'http://www.oceandvd.pl/' + MovieAddress; //MovieAddress := 'c:/film.htm'; StartPos := pos('">', Line) + 2; Line := copy(Line, StartPos, Length(Line) - StartPos + 1); MovieTitle := copy(Line, 1, pos('</a>', Line) - 1); DecodeHTML(MovieTitle); HTMLRemoveTags(MovieTitle); PickTreeAdd(MovieTitle, MovieAddress); until pos('<li>', Line) = 0; LineNr := LineNr + 1; Line := Page.GetString(LineNr); until pos('<li>', Line) = 0; end else break; end; procedure AnalyzePage(Address: string); var Page: TStringList; LineNr: Integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); //Page.LoadFromFile(Address); if pos('Wynik wyszukiwania', Page.Text) = 0 then AnalyzeMoviePage(Page) else begin PickTreeClear; LineNr := 0; AddMoviesTitles(Page, LineNr); if PickTreeExec(Address) then AnalyzePage(Address); end; Page.Free; end; procedure AnalyzeMoviePage(Page: TStringList); var Line, Value, FullValue: string; LineNr, Counter: Integer; StartPos, EndPos: Integer; begin // Tytu│ polski LineNr := FindLine('class="tytuly"><b>', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); StartPos := pos('class="tytuly"><b>', Line) + 18; Line := copy(Line, StartPos, Length(Line) - StartPos); EndPos := pos('(', Line); if EndPos > 0 then EndPos := EndPos - 2 else EndPos := pos('<', Line) - 1; Line := copy(Line, 1, EndPos); DecodeHTML(Line); SetField(fieldTranslatedTitle, Line); end // Tytu│ oryginalny LineNr := FindLine('class="tytuly"><b>', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); StartPos := pos('class="tytuly"><b>', Line) + 18; Line := copy(Line, StartPos, Length(Line) - StartPos); StartPos := pos('(', Line); if StartPos > 0 then begin StartPos := StartPos + 1; EndPos := pos(')', Line); end else begin StartPos := 1; EndPos := pos('<', Line); end Line := copy(Line, StartPos, EndPos-StartPos); DecodeHTML(Line); SetField(fieldOriginalTitle, Line); end // îrednia ocena LineNr := FindLine('rednia ocena:', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); StartPos := pos('rednia ocena:', Line) + 10; Line := copy(Line, StartPos, Length(Line) - StartPos); StartPos := pos('">', Line) + 2; Line := copy(Line, StartPos, Length(Line) - StartPos); Value := IntToStr(Round(StrToInt(StrGet(Line, 1), 0) + (StrToInt(StrGet(Line, 3), 0) / 10) + (StrToInt(StrGet(Line, 4), 0) / 100))); SetField(fieldRating, Value); end // Kategoria LineNr := FindLine('kat_', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); StartPos := pos('kat_', Line) + 4; Line := copy(Line, StartPos, Length(Line) - StartPos); Line := copy(Line, 1, pos('.jpg', Line) - 1); case Line of '9': Value := 'Animowany'; '2': Value := 'Dramat'; '6': Value := 'Erotyczny'; '10': Value := 'Film Polski'; '1': Value := 'Horror'; '3': Value := 'Komedia'; '11': Value := 'Przygodowy'; '8': Value := 'Science Fiction'; '4': Value := 'Sensacyjny'; '5': Value := 'Thriller'; else Value := ''; end; SetField(fieldCategory, Value); end // Kraj LineNr := FindLine('produkcja:', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr+1); HTMLRemoveTags(Line); DecodeHTML(Line); DelSpace(Line); Line := copy(Line, 2, Length(Line) - 1); SetField(fieldCountry, Line); end // Rok produkcji LineNr := FindLine('produkcja:', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr+2); HTMLRemoveTags(Line); DecodeHTML(Line); SetField(fieldYear, Line); end // Re┐yseria LineNr := FindLine('yseria:</b></td>', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr+1); HTMLRemoveTags(Line); DecodeHTML(Line); DelSpace(Line); Line := copy(Line, 2, Length(Line) - 1); SetField(fieldDirector, Line); end // Producent (dystrybutor) LineNr := FindLine('Dystrybucja:', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); StartPos := pos('Dystrybucja:', Line) + 13; Line := copy(Line, StartPos, Length(Line) - StartPos + 1); DecodeHTML(Line); SetField(fieldProducer, Line); end // Czas trwania LineNr := FindLine('czas trwania:', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr+1); StartPos := pos('>', Line) + 1; Line := copy(Line, StartPos, Length(Line) - StartPos); Value := copy(Line, 1, pos(' min', Line) - 1); SetField(fieldLength, Value); end // Opis filmu LineNr := FindLine('<!-- OPIS FILMU -->', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr+1); DecodeHTML(Line); HTMLRemoveTags(Line); DelSpace(Line); SetField(fieldDescription, Line); end // Obsada LineNr := FindLine('wystΩpuj', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := ''; repeat LineNr := LineNr + 1; Line := Page.GetString(LineNr); HTMLRemoveTags(Line); Value := Value + Line; until pos('<td>', Line) = 0; DelSpace(Value); Value := copy(Value, 2, Length(Line) - 1); DecodeHTML(Value); SetField(fieldActors, Value); end // Komentarz (Dane techniczne) Line := ''; LineNr := FindLine('Dodatki', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := Line+''#13#10''; end LineNr := FindLine('<!-- OPIS TECHNICZNY FILMU -->', Page, 0); if LineNr > -1 then begin Line := Line + Page.GetString(LineNr+2)+''#13#10''+Page.GetString(LineNr+3); end DecodeHTML(Line); HTMLRemoveTags(Line); DelSpace(Line); SetField(fieldComments, Line); //URL begin setField(fieldURL,'http://www.oceandvd.pl/search.php?searchtype=1&cmd=find&phrase='+UrlEncode(MovieName)); end //Foto LineNr:= FindLine('alt="ok│adka"', Page, 0); if LineNr > -1 then begin Line:= Page.GetString(LineNr); StartPos:= Pos('img src=', Line) + 8; Line:= Copy(Line, StartPos, Length(Line)); Value:= Copy(Line, 2, Pos('alt="ok│adka"', Line) - 4); Value:= 'http://www.oceandvd.pl/' + Value; HTMLRemoveTags(Value); DecodeHTML(Value); DelSpace(Value); GetPicture(Value); // False = nie przechowuj zdjΩcia na zewnΩtrz ; przechowuj w pliku katalogu end //DisplayResults; end; begin if CheckVersion(3,5,0) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('OceanDVD Import', 'Podaj tytu│ filmu:', MovieName) then begin AnalyzePage('http://www.oceandvd.pl/search.php?searchtype=1&cmd=find&phrase='+UrlEncode(MovieName)); //AnalyzePage('c:/lista.htm'); end; end else ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.5.0 lub nowszej'); end.